package com.huawei.leetcode;

import java.util.ArrayList;
import java.util.List;

public class Code2899 {
    //输入：nums = [1,2,-1,-1,-1]
    //输出：[2,1,-1]
    //解释： 开始时 seen = [] 且 ans = []。
    //1.处理 nums[0]：nums 中的第一个元素是 1。我们将其放在 seen 的前面。现在，seen == [1]。
    //2.处理 nums[1]：下一个元素是 2。我们将其放在 seen 的前面。现在，seen == [2, 1]。
    //3.处理 nums[2]：下一个元素是 -1。这是 -1 的第一次出现，所以 k == 1。我们找到 seen 中的第一个元素，把 2 添加到 ans。现在，ans == [2]。
    //4.处理 nums[3]：又一个 -1。这是 -1 的第二次出现，所以 k == 2。seen 中的第二个元素是 1，所以我们把 1 添加到 ans。现在，ans == [2, 1]。
    //5.处理 nums[4]：又一个 -1。第三次出现，让 k = 3。然而，seen 中只有两个元素（[2, 1]）。因为 k 比 seen 中的元素数量更大，我们把 -1 添加到 ans。最终，ans == [2, 1, -1]。
    public static void main(String[] args) {
        int[] nums = new int[]{1,2,-1,-1,-1};
        lastVisitedIntegers(nums);
    }

    public static List<Integer> lastVisitedIntegers(int[] nums) {
        //ans 下标
        int k = -1;
        List<Integer> ans = new ArrayList<>(nums.length / 2);
        List<Integer> seen = new ArrayList<>(nums.length / 2);

        for (int num : nums) {
            if (num == -1) {
                k++;
                if (k >= seen.size()) {
                    ans.add(-1);
                } else {
                    ans.add(seen.get(k));
                }
            } else {
                seen.add(0,num);
                if (k > -1) {
                    k = -1;
                }
            }
        }
        return ans;
    }
}
